Skip to main content
Version: Capstone Spring 2025 (Archived)

handlers

import "github.com/nickrucinski/cloverapi/internal/handlers"

handlers/storage.go

Index

func AnonymousAuthHandler

func AnonymousAuthHandler(c *gin.Context)

func CheckAndRegisterUser

func CheckAndRegisterUser(c *gin.Context)

func CreateClass

func CreateClass(c *gin.Context)

func DeleteClass

func DeleteClass(c *gin.Context)

func DeleteUser

func DeleteUser(c *gin.Context)

DeleteUser godoc @Summary Delete a user by ID @Description Deletes a user and their associated data based on the user ID. @Tags Users @Param user_id path string true "User ID" @Success 200 {object} map[string]string "message": "User deleted successfully", "user_id": "string" @Router /api/v1/users/{user_id} [delete]

func ExportAllData

func ExportAllData(c *gin.Context)

func GetAClass

func GetAClass(c *gin.Context)

func GetAIUsage

func GetAIUsage(c *gin.Context)

func GetAllClasses

func GetAllClasses(c *gin.Context)

func GetAllErrorsHandler

func GetAllErrorsHandler(c *gin.Context)

@Summary GetAllErrorsHandler retrieves all logged errors @Description Fetches all error logs from the database @Tags Logger @Accept json @Produce json @Success 200 {array} logger.API_Error "List of error logs" @Failure 500 {object} map[string]string "error" @Router /api/v1/logger/ [get]

func GetAllLogs

func GetAllLogs(c *gin.Context)

func GetClassesByInstructor

func GetClassesByInstructor(c *gin.Context)

func GetClassesByStudent

func GetClassesByStudent(c *gin.Context)

GetClassesByStudent godoc @Summary Get classes by student ID @Description Retrieves all classes a specific student is enrolled in. @Tags Users @Produce json @Param student_id path string true "Student ID" @Success 200 {array} models.Class @Failure 400 {object} map[string]string "error": "User ID is required" @Failure 500 {object} map[string]string "error": "DB query failed" or "error": "Scan error" @Router /api/v1/users/{student_id}/classes [get]

func GetLogsByClassID

func GetLogsByClassID(c *gin.Context)

func GetLogsByUserID

func GetLogsByUserID(c *gin.Context)

func GetSuggestionByModeAndId

func GetSuggestionByModeAndId(c *gin.Context)

func GetUser

func GetUser(c *gin.Context)

GetUser godoc @Summary Get a user by ID @Description Retrieves user details based on the user ID. @Tags Users @Param user_id path string true "User ID" @Success 200 {object} models.User @Router /api/v1/users/{user_id} [get]

func GetUserSuggestionLogsByMode

func GetUserSuggestionLogsByMode(c *gin.Context)

func GetUsers

func GetUsers(c *gin.Context)

GetUsers godoc @Summary Get all users @Description Retrieves all user's details. @Tags Users @Success 200 {array} models.User @Router /api/v1/users/ [get]

func HandleImageDelete

func HandleImageDelete(c *gin.Context)

HandleImageDelete handles the image deletion endpoint HandleImageDelete handles the image deletion endpoint

func HandleImageUpload

func HandleImageUpload(c *gin.Context)

HandleImageUpload handles the image upload endpoint with debug logging

func HandleLogin

func HandleLogin(c *gin.Context)

func HandleLogsForInstructor

func HandleLogsForInstructor(c *gin.Context)

func HandleSignUp

func HandleSignUp(c *gin.Context)

func HandleSuggestion

func HandleSuggestion(c *gin.Context)

func HandleUpdateUserSettings

func HandleUpdateUserSettings(c *gin.Context)

HandleUpdateUserSettings godoc @Summary Update user settings @Description Updates the settings for a specific user based on their ID. @Tags Users @Accept json @Produce json @Param user_id path string true "User ID" @Param settings body models.UserSettings true "User Settings Payload" @Success 200 {object} map[string]string "message": "Settings updated" @Failure 400 {object} map[string]string "error": "UserID is required" or "error": "Invalid settings payload" @Failure 500 {object} map[string]string "error": "Failed to update settings" @Router /api/v1/users/{user_id}/settings [put]

func InitStorageService

func InitStorageService()

func LogSuggestionEvent

func LogSuggestionEvent(c *gin.Context)

func LogUserEvent

func LogUserEvent(c *gin.Context)

func LogUserTyping

func LogUserTyping(c *gin.Context)

func NotImplementedHandler

func NotImplementedHandler(c *gin.Context)

func ProviderHandler

func ProviderHandler(c *gin.Context)

func RegisterClass

func RegisterClass(c *gin.Context)

func UnregisterClass

func UnregisterClass(c *gin.Context)

func UpdateClass

func UpdateClass(c *gin.Context)

func UpdateClassStudentsSettings

func UpdateClassStudentsSettings(c *gin.Context)

func UpdateEnrollmentStatus

func UpdateEnrollmentStatus(c *gin.Context)

func UpdatePassword

func UpdatePassword(c *gin.Context)

func UpdateUser

func UpdateUser(c *gin.Context)

UpdateUser godoc @Summary Update a user by ID @Description Updates a user's details based on the user ID. Fields are optional. @Tags Users @Accept json @Produce json @Param user_id path string true "User ID" @Success 200 {object} map[string]string "message": "User updated successfully", "user_id": "string" @Failure 400 {object} map[string]string "error": "Invalid request body" or "error": "User ID is required" @Failure 404 {object} map[string]string "error": "User not found" @Failure 500 {object} map[string]string "error": "Failed to update user" or "error": "Failed to update user in auth" @Router /api/v1/users/{user_id} [patch]

func UpdateUserStatus

func UpdateUserStatus(c *gin.Context)

@Summary Update user status @Description Updates the status of a user based on the user ID. @Tags Users @Accept json @Produce json @Param user_id path string true "User ID" @Param request body models.UserStatus true "User Status Update Request" @Success 200 {object} map[string]string "message: User status updated, user: <user_id>" @Failure 400 {object} map[string]string "error: Invalid request body" @Failure 500 {object} map[string]string "error: Failed to update user status"

type AIStat

type AIStat struct {
ID int `json:"id"`
CreatedAt time.Time `json:"created_at"`
InputTokens int `json:"input_tokens"`
OutputTokens int `json:"output_tokens"`
TotalTokens int `json:"total_tokens"`
LatencySeconds float32 `json:"latency_seconds"`
Model string `json:"model"`
Provider string `json:"provider"`
}

type AnonymousRequest

type AnonymousRequest struct {
Code string `json:"code"`
}

type CheckUserRequest

type CheckUserRequest struct {
Email string `json:"email"`
FirstName string `json:"first_name"`
LastName string `json:"last_name"`
UserID string `json:"id"`
}

type ImageUploadResponse

type ImageUploadResponse struct {
Success bool `json:"success"`
ImageURL string `json:"image_url,omitempty"`
ImagePath string `json:"image_path,omitempty"`
Error string `json:"error,omitempty"`
}

type LogUserTypingStatsRequest

LogUserTypingStatsRequest represents the request body for logging typing statistics

type LogUserTypingStatsRequest struct {
TypedNumber int `json:"typed_number"`
AcceptedNumber int `json:"accepted_number"`
SuggestionID *string `json:"suggestion_id,omitempty"`
SuggestionLineID *string `json:"suggestion_line_id,omitempty"`
SuggestionSelectionItemID *string `json:"suggestion_selection_item_id,omitempty"`
}

type RegisterClassRequest

type RegisterClassRequest struct {
ClassID string `json:"classId" binding:"required"`
UserID string `json:"userId" binding:"required"`
}

type StorageService

type StorageService struct {
// contains filtered or unexported fields
}

func GetStorageService

func GetStorageService() *StorageService

func (*StorageService) CreateBucket

func (s *StorageService) CreateBucket(ctx context.Context) error

Create storage bucket (call this once during setup)

func (*StorageService) DeleteImage

func (s *StorageService) DeleteImage(ctx context.Context, imagePath string) error

Delete image from Supabase Storage using HTTP API

func (*StorageService) UploadImage

func (s *StorageService) UploadImage(ctx context.Context, file multipart.File, header *multipart.FileHeader, userID string) (*ImageUploadResponse, error)

Upload image to Supabase Storage using HTTP API

type SuggestionRequest

type SuggestionRequest struct {
Prompt string `json:"prompt"`
UserID string `json:"userId"`
HasBug bool `json:"hasBug"`
ClassID *string `json:"classId,omitempty"`
Language string `json:"language"`
}

type SupabaseErrorResponse

type SupabaseErrorResponse struct {
Error string `json:"error"`
Message string `json:"message"`
}

type SupabaseStorageResponse

type SupabaseStorageResponse struct {
Key string `json:"Key"`
}

type UpdateStudentsSettingsRequest

type UpdateStudentsSettingsRequest struct {
StudentIDs []string `json:"studentIds" binding:"required"`
Settings models.UserSettings `json:"settings" binding:"required"`
}

Generated by gomarkdoc